# -*- coding: utf-8 -*-

"""
 *
 * - Ime
 *
 *  - kratki opis
 *
 * Autori: Koki007
 * Verzija: 0.1
 * Datum: 13.01.2011
 *
"""

import math


# ovaj osnovni AI ce samo imat mogucnost neki objekt voditi po nekoj ruti po x-koordinati 
# NOTE: trenutno se koristi samo u sidescrolleru- trebat ce je "generalizirati" 
class cOsnovni_AI:

    """ 
    cOsnovni_AI sluzi za postavljanje objekata(neprijatelja) koji se krecu po nekoj zadanoj ruti
        - kod instanciranja se salju dva argumenta: objekt i ruta
        - objekt - je bila koja instanca cPokretni_objekt te taj objekt AI kontrolira
        - ruta - ruta je lista tocaka po x osi prema kojima ce AI hodati
    """

    def __init__(self, objekt, ruta):

        self.povezi_sa_objektom(objekt)

        self.ruta = ruta
        self.redni_broj_rute = 1 
        self.max_udaljenost = 10 # kod koje udaljenosti izmedu objeta i rute se smatra da je objekt dosao do rute
        pass

    def azuriraj(self):
        #print "AI se azurira"
        trenutna_pozicija_x = self.objekt.provjeri_poziciju_x()
        ruta_x = self.ruta[self.redni_broj_rute]

        if trenutna_pozicija_x < ruta_x:
            self.objekt.pomakni_desno()
        else: self.objekt.pomakni_lijevo()
        
        trenutna_pozicija_x = self.objekt.provjeri_poziciju_x()
        if math.fabs(trenutna_pozicija_x - ruta_x) < self.max_udaljenost:
            self.redni_broj_rute += 1
            if self.redni_broj_rute == len(self.ruta):
                self.redni_broj_rute = 0
            #print self.redni_broj_rute

        pass

    def povezi_sa_objektom(self, objekt):
        self.objekt = objekt
        self.stara_pozicija = objekt.provjeri_poziciju_x()

    # kao argument se salje popis tocaka po x osi
    def zadaj_rutu(self, popis_tocaka):
        self.ruta = popis_tocaka
